# Gaptcha

A GNU spirited Libre Captcha

Dependencies : JQuery, JQuery-UI

Logic : There are 2 things which pose difficulties for bots. Number of actions available, only 4 here yet and the context of the question.

Demonstration at : [https://caissalover.github.io/gaptcha]

User Guide : 

1. Clone this repo.
2. Ensure you have jquery.min.js, jquery-ui.min.css, jquery-ui.min.js and images in your static folder
3. Ensure style attributes don't clash with your own styles.
4. From gaptcha.html, copy head contents to your head and body to your body. (Don't trust us. Check that there's no backdoor in the code.)
5. Create a div with id="gaptcha" where your final form element will be.
6. Extract form value and check the answer at your backend.
7. Give a star to gaptcha if you found it useful!

Troubleshooting :
1. Ensure your static files are linked correctly and you have jquery before jquery-ui

Contributing : 

1. You can contribute by adding more instances of the captcha which include:
    - A set of images (Should be similar to each other in properties and different for the user)
    - Answer
    - Question posed to the user (Should be a no-brainer)

Guide to framing the question:

The question must be something contextual like "Drag the actor of movie Titanic to the box". This makes things difficult 2-fold for a bot. First, finding the actor, recognizing the image("always keep colored images") and dragging the respective image to the box.

Guide to selecting images:

Image classification is almost a solved task. Due to this, one should prevent having only a single image with high similarity to the words in question.

Future Goals:
1. Having more questions and answers so that users can choose on random from backend.
2. Removing jquery dependency and making it in javascript. (Improbable as I hate javascript)
